import redis

# 连接 Redis
def connect_redis(host='localhost', port=6379, db=0, password=None):
    """
    连接 Redis 服务器
    :param host: Redis 服务器地址
    :param port: Redis 服务器端口
    :param db: 数据库编号
    :param password: Redis 密码（如果有）
    :return: Redis 连接对象
    """
    try:
        # 创建 Redis 连接
        r = redis.Redis(host=host, port=port, db=db, password=password)
        # 测试连接是否成功
        if r.ping():
            print("成功连接到 Redis 服务器！")
            return r
    except Exception as e:
        print(f"连接 Redis 失败: {e}")
        return None

# 获取 Redis 连接
def get_rd_conn():
    # 连接 Redis
    r = connect_redis(host='192.168.33.10', port=6379, db=0, password="123456")

    if r is None:
        print("连接redis失败")

    return r

# 操作 Redis 数据
def operate_redis():
    # 连接 Redis
    r = get_rd_conn()

    try:
        # 设置键值对
        r.set('name', 'Alice')
        print("设置键值对: name -> Alice")

        # 获取键值对
        name = r.get('name')
        print(f"获取键值对: name -> {name.decode('utf-8')}")
        #
        # # 设置哈希表
        # r.hset('user:1', mapping={'name': 'Bob', 'age': 30})
        # print("设置哈希表: user:1 -> {'name': 'Bob', 'age': 30}")
        #
        # # 获取哈希表
        # user = r.hgetall('user:1')
        # print("获取哈希表: user:1 ->", {k.decode('utf-8'): v.decode('utf-8') for k, v in user.items()})
        #
        # # 设置列表
        # r.lpush('fruits', 'apple', 'banana', 'orange')
        # print("设置列表: fruits -> ['apple', 'banana', 'orange']")
        #
        # # 获取列表
        # fruits = r.lrange('fruits', 0, -1)
        # print("获取列表: fruits ->", [fruit.decode('utf-8') for fruit in fruits])
        #
        # # 删除键
        # r.delete('name')
        # print("删除键: name")
        #
        # # 检查键是否存在
        # exists = r.exists('name')
        # print(f"键 'name' 是否存在: {exists}")

    except Exception as e:
        print(f"操作 Redis 时出错: {e}")

# 主函数
if __name__ == "__main__":
    operate_redis()